// pages/films/index.js
Page({

	sleep(job,ms) { //返回一个Promise对象
		return new Promise((resolve, reject) => {
			setTimeout(() => {
				console.log(job + ' done!')
				resolve()
			}, ms)
		})
	},
	async Demo() { //await修饰的语句所在的函数必须用async修饰
		await this.sleep('job1',3000) //await会等待后面的Promise返回结果
		await this.sleep('job2',2000)
		await this.sleep('job3',1000)
	},
	regexTest(){ //正则编程测试
		let s='aaa123 www  bbb456 ccc789  567'
		let r, regex=/([a-zA-Z]+)([0-9]+)/g
		while(r=regex.exec(s)){ //若r==null，表示没有匹配成功
			console.log(r) //["aaa123", "aaa", "123", index: 0, input: "aaa123 www  bbb456 ccc789  567", groups: undefined]
		}
	},
	onLoad(e) { //页面加载时执行
		// this.Demo()
		this.regexTest()
		let data = wx.getStorageSync('menus') //读取手机缓存的数据
		if (data) this.setData(data) //若有缓存的数据就设置为页面数据
	},
	async types(e) { //点击类型项时执行
		let typeIndex = e.target.dataset.index //点击类型项的索引号
		if (typeIndex == null) return //没有点击在类型项上，就直接返回
		let menuIndex = this.data.menuIndex //当前菜单项索引号
		let change = {} //记录有变化的数据
        let menu = this.data.menus[menuIndex] //当前菜单项
        let type= menu.types[typeIndex] //点击的类型项
		let oldTypeIndex = menu.typeIndex //原来选择的类型项的索引号
		if (oldTypeIndex != null) change[`menus[${menuIndex}].types[${oldTypeIndex}].selected`] = false
		change[`menus[${menuIndex}].types[${typeIndex}].selected`] = true
		change[`menus[${menuIndex}].typeIndex`] = typeIndex
		this.setData(change)
		let app=getApp() //获取小程序对象
		let s=await app.request({url: `https://www.gow64.com/by/${type.id}.html`})
		let r, list=[], regex=/<a href="([^"]+)" title="([^"]+)" class="module-item-pic"><img class="lazyload" data-src="([^"]+)"/g
		while(r=regex.exec(s)){ //若r==null，表示没有匹配成功
			//console.log(r) //["aaa123", "aaa", "123", index: 0, input: "aaa123 www  bbb456 ccc789  567", groups: undefined]
			list.push({
				url: r[1],
				title: r[2],
				img: r[3],
			})
		}
        console.log(list)
        this.setData({[`menus[${menuIndex}].types[${typeIndex}].list`]:list})
	},
	menus(e) { //点击菜单时执行
		let menuIndex = e.currentTarget.dataset.index //点击菜单的索引号
		if (menuIndex == 0) { //点击的是刷新
			return
		}
		let oldIndex = this.data.menuIndex //原来点击的菜单的索引号
		let change = {
			menuIndex
		} //记录有变化的数据
		change[`menus[${oldIndex}].selected`] = false
		change[`menus[${menuIndex}].selected`] = true
		this.setData(change)
	},

	onUnload() { //页面销毁时执行
		console.log("onUnload")
		this.save()
	},
	onHide() { //页面从前台变为后台时执行
		console.log("onHide")
		this.save()
	},
	save() { //保存页面数据
		let data = this.data
		delete data.__webviewId__
		wx.setStorageSync('menus', data) //保存页面数据到手机缓存
	},
	// 正则表达式
	//  ( ） 分组，替换时 $1表示分组1的内容，$2表示分组2的内容，...
	//  \d 表示任意的一位数字0-9
	//  \d+ 表示任意连续的多位数组，+修饰前面的\d, 表示\d至少出现 1 次
	//  [xyz] 表示可以是x\y\z三者中的任意一个字符
	//  [a-z] 匹配一位英文小写字符
	//  [a-z#@A-Z] 匹配英文大小写字符或者#，@中的任意一个字符
	//  [^a-j] 匹配不是a-j的任意字符


	data: {
		menuIndex: 2,
		menus: [{
			name: '[刷新]'
		}, {
			name: '[搜索]',
		}, {
			name: '电影',
			selected: true,
			types: [
				{ name: '动作片', id: 14 },
				{ name: '喜剧片', id: 15 },
				{ name: '爱情片', id: 16 },
				{ name: '科幻片', id: 17 },
				{ name: '恐怖片', id: 18 },
				{ name: '剧情片', id: 19 },
				{ name: '战争片', id: 20 },
				{ name: '纪录片', id: 21 },
			]
		}, {
			name: '电视剧',
			types: [
				{ name: '国产剧', id: 5 },
				{ name: '香港剧', id: 6 },
				{ name: '台湾剧', id: 7 },
				{ name: '欧美剧', id: 8 },
				{ name: '韩国剧', id: 9 },
				{ name: '日本剧', id: 10 },
				{ name: '泰国剧', id: 11 },
				{ name: '海外剧', id: 12 },
				{ name: '短剧', id: 13 },
			]
		}, {
			name: '综艺',
			types: [
				{ name: '大陆综艺', id: 22 },
				{ name: '港台综艺', id: 23 },
				{ name: '欧美综艺', id: 24 },
				{ name: '日韩综艺', id: 25 },
			]
		}, {
			name: '动漫',
			types: [
				{ name: '国产动漫', id: 26 },
				{ name: '日韩动漫', id: 27 },
				{ name: '欧美动漫', id: 28 },
				{ name: '海外动漫', id: 29 },
				{ name: '动漫电影', id: 30 },
			]
		}]
	},

})